package cl.inacap.adm.proyect.dao;


import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.apache.log4j.Logger;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;

import cl.inacap.adm.proyect.model.bo.dvo.ClienteDVO;
import cl.inacap.adm.proyect.model.bo.dvo.JmsUserDVO;
import cl.inacap.adm.proyect.model.bo.dvo.ProyectoDVO;


	public class IbatisAdmProyectDaoImpl extends SqlMapClientDaoSupport implements AdmProyectDao{
	
	static final Logger logger = Logger.getLogger(IbatisAdmProyectDaoImpl.class);

	
	
	public JmsUserDVO getUser(int id) throws Exception {
		return (JmsUserDVO)getSqlMapClientTemplate().queryForObject("getUserById",id);
	}
	
	
	
	public ProyectoDVO getProyectoById(int proId) throws Exception{
		Map<Object, Object> mapa = new HashMap<Object, Object>();
		mapa.put("V_PRO_ID", proId);
		return (ProyectoDVO)getSqlMapClientTemplate().queryForObject("getUserById",mapa);
		
	}
	
	
	
	
	
	
	
	public int insertProyecto(ProyectoDVO proyecto) throws Exception {

		Map<Object, Object> mapa = new HashMap<Object, Object>();

		mapa.put("V_PRO_ESTADO", proyecto.getEstado());
		mapa.put("V_PRO_ETAPA", proyecto.getEtapa());
		mapa.put("V_PRO_GARANTIA_SEMANA", proyecto.getGarantiaSemana());
		mapa.put("V_PRO_FECHA_INICIO", proyecto.getFechaInicio());
		mapa.put("V_PRO_FECHA_TERMINO_ACORDADO", proyecto.getFechaTerminoAcordado());
		mapa.put("V_PRO_FECHA_REPORTE", proyecto.getFechaReporte());
		mapa.put("V_PRO_FECHA_TERMINO_GARANTIA", proyecto.getFechaTerminoGarantia());
		mapa.put("V_CLI_ID", proyecto.getClienteId());
		mapa.put("V_TP_ID", proyecto.getTipoProyectoId());
		mapa.put("V_EQ_ID", proyecto.getEquipoId());
		mapa.put("V_PRO_PORCENTAJE_AVANCE", proyecto.getPorcentajeAvance());
		mapa.put("V_PRO_LINEA_BASE", proyecto.getLineaBase());
		mapa.put("V_PRO_HH_VENDIDAS", proyecto.getHhVendidas());
		mapa.put("V_PRO_HH_REAL", proyecto.getHhReal());
		mapa.put("V_PRO_STAFF_ORIGINAL", proyecto.getStaffOriginal());
		mapa.put("V_PRO_STAFF_REAL", proyecto.getStaffReal());
		mapa.put("V_PRO_NOMBRE", proyecto.getNombre());

		return (Integer)getSqlMapClientTemplate().insert("insertProyecto",mapa);
		
		
	}
	
	public void updateProyecto(ProyectoDVO proyecto) throws Exception {

		Map<Object, Object> mapa = new HashMap<Object, Object>();

		mapa.put("V_PRO_ESTADO", proyecto.getEstado());
		mapa.put("V_PRO_ETAPA", proyecto.getEtapa());
		mapa.put("V_PRO_GARANTIA_SEMANA", proyecto.getGarantiaSemana());
		mapa.put("V_PRO_FECHA_INICIO", proyecto.getFechaInicio());
		mapa.put("V_PRO_FECHA_TERMINO_ACORDADO", proyecto.getFechaTerminoAcordado());
		mapa.put("V_PRO_FECHA_REPORTE", proyecto.getFechaReporte());
		mapa.put("V_PRO_FECHA_TERMINO_GARANTIA", proyecto.getFechaTerminoGarantia());
		mapa.put("V_CLI_ID", proyecto.getClienteId());
		mapa.put("V_TP_ID", proyecto.getTipoProyectoId());
		mapa.put("V_EQ_ID", proyecto.getEquipoId());
		mapa.put("V_PRO_PORCENTAJE_AVANCE", proyecto.getPorcentajeAvance());
		mapa.put("V_PRO_LINEA_BASE", proyecto.getLineaBase());
		mapa.put("V_PRO_HH_VENDIDAS", proyecto.getHhVendidas());
		mapa.put("V_PRO_HH_REAL", proyecto.getHhReal());
		mapa.put("V_PRO_STAFF_ORIGINAL", proyecto.getStaffOriginal());
		mapa.put("V_PRO_STAFF_REAL", proyecto.getStaffReal());
		mapa.put("V_PRO_NOMBRE", proyecto.getNombre());
		mapa.put("V_PRO_ID", proyecto.getProId());

		getSqlMapClientTemplate().update("updateProyecto",mapa);
		
	}
	
	public void deleteProyectoById(Integer proId ) throws Exception {
		Map<Object, Object> mapa = new HashMap<Object, Object>();
		mapa.put("V_PRO_ID", proId);
		getSqlMapClientTemplate().delete("deleteProyectoById",mapa);
	}
	
	public ClienteDVO getClienteById (Integer id)throws Exception {
		Map<Object, Object> mapa = new HashMap<Object, Object>();
		mapa.put("V_CLI_ID", id);
		return (ClienteDVO)getSqlMapClientTemplate().queryForObject("getClienteById",mapa);
	}
	
	public int insertCliente(ClienteDVO cliente) throws Exception {
		Map<Object, Object> mapa = new HashMap<Object, Object>();
		mapa.put("V_CLI_NOMBRE", cliente.getNombre());
		mapa.put("V_CLI_RUT", cliente.getRut());
		mapa.put("V_CLI_FONO", cliente.getFono());
		mapa.put("V_CLI_DIRECCION", cliente.getDireccion());
		return (Integer)getSqlMapClientTemplate().insert("insertCliente",mapa);
	}

	
	public void deleteClienteById(Integer id ) throws Exception {
		Map<Object, Object> mapa = new HashMap<Object, Object>();
		mapa.put("V_CLI_ID", id);
		getSqlMapClientTemplate().delete("deleteClienteById",mapa);
	}
		
	public void updateCliente(ClienteDVO cliente) throws Exception {
		Map<Object, Object> mapa = new HashMap<Object, Object>();
		mapa.put("V_CLI_NOMBRE", cliente.getNombre());
		mapa.put("V_CLI_RUT", cliente.getRut());
		mapa.put("V_CLI_FONO", cliente.getFono());
		mapa.put("V_CLI_DIRECCION", cliente.getDireccion());
		mapa.put("V_CLI_ID", cliente.getIdentificador());
		getSqlMapClientTemplate().update("updateCliente",mapa);
	}	
	
	public ClienteDVO[] getClientes ()throws Exception {

		List lista = getSqlMapClientTemplate().queryForList("getClientes",null);
		
		return (ClienteDVO[])lista.toArray(new ClienteDVO[lista.size()] );
		
	}
	
	
	public ProyectoDVO[] getProyectos() throws Exception{
	
		List lista = getSqlMapClientTemplate().queryForList("getProyectos",null);
		
		return (ProyectoDVO[])lista.toArray(new ProyectoDVO[lista.size()] );
		
	}
	

}
